home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Starter / Source / util.m < prev   
Text File  |  1995-06-12  |  3KB  |  122 lines

  1. #import <appkit/appkit.h>
  2. #import "defs.h"
  3.  
  4. BOOL truthValue(const char *str)
  5. {    if (!str) return NO;
  6.     switch (str[0]|32) {
  7.     case '1': case 'a': case 't': case 'y': return YES;
  8.     default: return NO;
  9.     }
  10. }
  11.  
  12. const char *getDefaultWithErrorCheck(const char *defname)
  13. {
  14. register const char *a=[NXApp appName];
  15. const char *p;
  16.     p=(char *)NXGetDefaultValue(a,defname);
  17.     if(!p)
  18.         { NXRunAlertPanel("Internal Error",
  19.            "%s default undefined",
  20.             NULL,NULL,NULL,defname);
  21.         }
  22.     return p;
  23. }
  24.  
  25. BOOL BoolValueForDefault(const char *defname)
  26. {
  27. const char *p=getDefaultWithErrorCheck(defname);
  28.     return truthValue(p);
  29. }
  30.  
  31. int IntValueForDefault(const char *defname)
  32. {
  33. const char *p=getDefaultWithErrorCheck(defname);
  34.     return atoi(p);
  35. }
  36.  
  37. void copyStringBufferFromZone(char **ptr,const char *contents, NXZone *zone)
  38. {    
  39.     if(*ptr==contents) return;
  40.     if(*ptr) free(*ptr);
  41.     
  42.     *ptr=NXCopyStringBufferFromZone(contents,zone);
  43. }
  44.  
  45. BOOL makepath(char *parent,char *child, BOOL cleanFlag)
  46. {
  47. char *p1, buf[BUFSIZE];
  48.     if(!child) return NO;
  49.     if(parent) 
  50.       { if(mkdir(parent,0700)<0 && errno!=EEXIST) goto FAILED;
  51.         sprintf(buf,"%s/%s",parent,child);
  52.       }
  53.     else strcpy(buf, child);
  54.     p1=strstr(buf,child);
  55.     for(;;)
  56.      { p1=strchr(p1,'/');
  57.        if(p1) p1[0]='\0';
  58.        if(mkdir(buf,0700)<0 && errno!=EEXIST) goto FAILED;
  59.        if(!p1) goto CLEAR_LABEL;
  60.        p1[0]='/';
  61.        p1++;
  62.      }
  63. FAILED:
  64.     return NO;
  65.  
  66. CLEAR_LABEL:
  67.     if(cleanFlag)
  68.      { sprintf(buf,
  69.           "exec /bin/rm -rf %s/%s/*",parent,child);
  70.        if (chdir(NXHomeDirectory())>=0)
  71.               system(buf);
  72.      }   
  73.     return YES;
  74. }
  75.  
  76. NXScreen *getScreenOfNumber(int screenNum)
  77. {
  78. int i,count;
  79. NXScreen *list;
  80.     [NXApp getScreens:&list count:&count];
  81.     
  82.     for(i=0;i<count;i++)
  83.      { if(list[i].screenNumber==screenNum) 
  84.            return &list[i];
  85.      }
  86.     return NULL;
  87. }
  88.  
  89. char *findNameInPath(const char *path)
  90. {
  91. static char empty[]="";
  92. char *p=empty;
  93.     if((p=strrchr(path,'/'))) p++;
  94.     if(!p || !p[0]) p=(char *)path;
  95.     
  96.     return p;
  97. }
  98.  
  99. BOOL extCheck(const char *path, const char *extension)
  100. {    
  101. int len, pathLen;
  102.     if(!path || !extension) return NO;
  103.     len=strlen(extension);
  104.     pathLen=strlen(path);
  105.     return ((path[pathLen-len-1]=='.') &&
  106.             (strcmp((char *)(path+(pathLen-len)),extension)==0));
  107. }
  108.  
  109. void insertExt(const char *path, const char *extension)
  110. {    if(!extCheck(path,extension))
  111.      { int len=strlen(path);
  112.        if(path[len-1]!='.') strcat((char *)path,".");
  113.        strcat((char *)path,extension);
  114.      }
  115. }
  116.  
  117. void internalError(const char *message)
  118. {    NXRunAlertPanel("Internal Error","%s",NULL,NULL,NULL,message);
  119. }
  120.  
  121.  
  122.